<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><script type="text/javascript" src="https://cdn.jsdelivr.net/gh/opencobra/cobratoolbox@ffa0229fc0c01c9236bb7e961f65712443277719/latest/_static/js/iframeResizer.contentWindow.min.js"></script><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,IE=9,chrome=1"><meta name="generator" content="MATLAB 2021a"><title>genetic Minimal Cut Sets - gMCS</title><style type="text/css">.rtcContent { padding: 30px; } .S0 { margin: 3px 10px 5px 4px; padding: 0px; line-height: 28.8px; min-height: 0px; white-space: normal; color: rgb(213, 80, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 24px; font-weight: normal; text-align: left;  }
.S1 { margin: 20px 10px 5px 4px; padding: 0px; line-height: 20px; min-height: 0px; white-space: normal; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 20px; font-weight: bold; text-align: left;  }
.S2 { margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: normal; text-align: left;  }
.S3 { margin: 3px 10px 5px 4px; padding: 0px; line-height: 20px; min-height: 0px; white-space: normal; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 20px; font-weight: bold; text-align: left;  }
.CodeBlock { background-color: #F7F7F7; margin: 10px 0 10px 0;}
.S4 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 1px solid rgb(233, 233, 233); border-bottom: 1px solid rgb(233, 233, 233); border-radius: 4px 4px 0px 0px; padding: 6px 45px 4px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S5 { color: rgb(64, 64, 64); padding: 10px 0px 6px 17px; background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px; overflow-x: hidden; line-height: 17.234px;  }
/* Styling that is common to warnings and errors is in diagnosticOutput.css */.embeddedOutputsErrorElement {    min-height: 18px;    max-height: 250px;    overflow: auto;}
.embeddedOutputsErrorElement.inlineElement {}
.embeddedOutputsErrorElement.rightPaneElement {}
/* Styling that is common to warnings and errors is in diagnosticOutput.css */.embeddedOutputsWarningElement{    min-height: 18px;    max-height: 250px;    overflow: auto;}
.embeddedOutputsWarningElement.inlineElement {}
.embeddedOutputsWarningElement.rightPaneElement {}
/* Copyright 2015-2019 The MathWorks, Inc. *//* In this file, styles are not scoped to rtcContainer since they could be in the Dojo Tooltip */.diagnosticMessage-wrapper {    font-family: Menlo, Monaco, Consolas, "Courier New", monospace;    font-size: 12px;}
.diagnosticMessage-wrapper.diagnosticMessage-warningType {    color: rgb(255,100,0);}
.diagnosticMessage-wrapper.diagnosticMessage-warningType a {    color: rgb(255,100,0);    text-decoration: underline;}
.diagnosticMessage-wrapper.diagnosticMessage-errorType {    color: rgb(230,0,0);}
.diagnosticMessage-wrapper.diagnosticMessage-errorType a {    color: rgb(230,0,0);    text-decoration: underline;}
.diagnosticMessage-wrapper .diagnosticMessage-messagePart,.diagnosticMessage-wrapper .diagnosticMessage-causePart {    white-space: normal;}
.diagnosticMessage-wrapper .diagnosticMessage-stackPart {    white-space: normal;}
.embeddedOutputsTextElement,.embeddedOutputsVariableStringElement {    white-space: normal;    word-wrap:  initial;    min-height: 18px;    max-height: 250px;    overflow: auto;}
.textElement,.rtcDataTipElement .textElement {    padding-top: 3px;}
.embeddedOutputsTextElement.inlineElement,.embeddedOutputsVariableStringElement.inlineElement {}
.inlineElement .textElement {}
.embeddedOutputsTextElement.rightPaneElement,.embeddedOutputsVariableStringElement.rightPaneElement {    min-height: 16px;}
.rightPaneElement .textElement {    padding-top: 2px;    padding-left: 9px;}
.S6 { margin: 10px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: normal; text-align: left;  }
.S7 { margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: normal; text-align: center;  }
.S8 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 1px solid rgb(233, 233, 233); border-bottom: 1px solid rgb(233, 233, 233); border-radius: 4px; padding: 6px 45px 4px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S9 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 1px solid rgb(233, 233, 233); border-bottom: 1px solid rgb(233, 233, 233); border-radius: 0px; padding: 6px 45px 4px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S10 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 1px solid rgb(233, 233, 233); border-bottom: 0px none rgb(0, 0, 0); border-radius: 4px 4px 0px 0px; padding: 6px 45px 0px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S11 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 0px none rgb(0, 0, 0); border-bottom: 1px solid rgb(233, 233, 233); border-radius: 0px 0px 4px 4px; padding: 0px 45px 4px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S12 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 0px none rgb(0, 0, 0); border-bottom: 0px none rgb(0, 0, 0); border-radius: 0px; padding: 0px 45px 0px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S13 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 0px none rgb(0, 0, 0); border-bottom: 1px solid rgb(233, 233, 233); border-radius: 0px; padding: 0px 45px 4px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S14 { margin: 10px 0px 20px; padding-left: 0px; font-family: Helvetica, Arial, sans-serif; font-size: 14px;  }
.S15 { margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: normal;  }</style></head><body><div class = rtcContent><h1  class = 'S0'><span style=' font-weight: bold;'>genetic Minimal Cut Sets - gMCS</span></h1><h2  class = 'S1'><span>Authors: Iñigo Apaolaza, University of Navarra, TECNUN School of Engineering, Spain</span></h2><h2  class = 'S1'><span>Luis V. Valcarcel, University of Navarra, TECNUN School of Engineering, Spain</span></h2><h2  class = 'S1'><span>Francisco J. Planes, University of Navarra, TECNUN School of Engineering, Spain</span></h2><h2  class = 'S1'><span>Reviewer(s): </span></h2><h2  class = 'S1'><span>INTRODUCTION</span></h2><div  class = 'S2'><span>Minimal Cut Sets (MCSs) are minimal sets of reaction knockouts which deprive a network from accomplishing a given metabolic task</span><span texencoding="$^1" style="vertical-align:-5px"><img src="" width="8" height="19" /></span><span>. On the other hand, genetic Minimal Cut Sets (gMCSs) consist of minimal sets of genes whose simultaneous inhibition would render the functioning of a given metabolic task impossible</span><span texencoding="$ ^2" style="vertical-align:-5px"><img src="" width="8" height="19" /></span><span>. Therefore, the concepts of MCSs and gMCSs are equivalent but at different levels: at the reaction level for the former and at the gene level for the latter.</span></div><div  class = 'S2'><span>MCSs are not directly converted into feasible knockout strategies at a gene level due to the fact that the Gene-Protein-Reaction (GPR) rules, typically provided in genome-scale metabolic reconstructions, are not one-to-one. Certainly, we can find impractical reaction knockouts because they are catalyzed by enzymes involving several genes, which increase the cost of the intervention. On the other hand, the resulting gene knockout interventions from MCSs may provoke undesired metabolic effects, as we may have reactions (included in a particular MCS) catalyzed by an enzyme that additionally participate in other relevant reactions (not included in the MCS under consideration). This fact is further discussed in Apaolaza et al., 2017 (a)</span><span texencoding="$ ^2" style="vertical-align:-5px"><img src="" width="8" height="19" /></span><span>, (b)</span><span texencoding="$^3" style="vertical-align:-5px"><img src="" width="8" height="19" /></span><span>.</span></div><div  class = 'S2'><span>Moreover, state-of-the-art methods which calculate combined gene intervention strategies are based on combinatorial approaches and, as a consequence, are not viable for seeking for high order therapeutic strategies in large metabolic networks. This tutorial aims also to demonstrate that the calculation gMCSs involving a large number of genes is viable with the function provided.</span></div><h2  class = 'S3'><span>EQUIPMENT SETUP</span></h2><h2  class = 'S1'><span>Initialize The Cobra Toolbox and select the solver (~25 sec)</span></h2><div  class = 'S2'><span>If necessary, initialise the Cobra Toolbox:</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S4'><span style="white-space: normal"><span >initCobraToolbox(false) </span><span style="color: rgb(2, 128, 9);">% false, as we don't want to update</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="C7831934" data-testid="output_0" data-width="428" data-height="885" data-hashorizontaloverflow="true" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">      _____   _____   _____   _____     _____     |
     /  ___| /  _  \ |  _  \ |  _  \   / ___ \    |   COnstraint-Based Reconstruction and Analysis
     | |     | | | | | |_| | | |_| |  | |___| |   |   The COBRA Toolbox - 2018
     | |     | | | | |  _  { |  _  /  |  ___  |   |
     | |___  | |_| | | |_| | | | \ \  | |   | |   |   Documentation:
     \_____| \_____/ |_____/ |_|  \_\ |_|   |_|   |   <a href="http://opencobra.github.io/cobratoolbox" style="white-space: normal; font-style: normal; color: rgb(0, 95, 206); font-size: 12px;">http://opencobra.github.io/cobratoolbox</a>
                                                  | 

 &gt; Checking if git is installed ...  Done.
 &gt; Checking if the repository is tracked using git ...  Done.
 &gt; Checking if curl is installed ...  Done.
 &gt; Checking if remote can be reached ...  Done.
 &gt; Initializing and updating submodules (this may take a while)... Done.
 &gt; Adding all the files of The COBRA Toolbox ...  Done.
 &gt; Define CB map output... set to svg.
 &gt; TranslateSBML is installed and working properly.
 &gt; Configuring solver environment variables ...
   - [---*] ILOG_CPLEX_PATH: C:\Program Files\ibm\ILOG\CPLEX_Studio128\cplex\matlab\x64_win64
   - [----] GUROBI_PATH: --&gt; set this path manually after installing the solver ( see <a href="https://opencobra.github.io/cobratoolbox/docs/solvers.html" style="white-space: normal; font-style: normal; color: rgb(0, 95, 206); font-size: 12px;">instructions</a> )
   - [----] TOMLAB_PATH: --&gt; set this path manually after installing the solver ( see <a href="https://opencobra.github.io/cobratoolbox/docs/solvers.html" style="white-space: normal; font-style: normal; color: rgb(0, 95, 206); font-size: 12px;">instructions</a> )
   - [----] MOSEK_PATH: --&gt; set this path manually after installing the solver ( see <a href="https://opencobra.github.io/cobratoolbox/docs/solvers.html" style="white-space: normal; font-style: normal; color: rgb(0, 95, 206); font-size: 12px;">instructions</a> )
   Done.
 &gt; Checking available solvers and solver interfaces ... Done.
 &gt; Setting default solvers ... Done.
 &gt; Saving the MATLAB path ... Done.
   - The MATLAB path was saved in the default location.

 &gt; Summary of available solvers and solver interfaces

					Support           LP 	 MILP 	   QP 	 MIQP 	  NLP
	----------------------------------------------------------------------
	gurobi       	active        	    0 	    0 	    0 	    0 	    -
	ibm_cplex    	active        	    1 	    1 	    1 	    - 	    -
	tomlab_cplex 	active        	    0 	    0 	    0 	    0 	    -
	glpk         	active        	    1 	    1 	    - 	    - 	    -
	mosek        	active        	    0 	    - 	    0 	    - 	    -
	matlab       	active        	    1 	    - 	    - 	    - 	    1
	cplex_direct 	active        	    0 	    0 	    0 	    0 	    -
	dqqMinos     	active        	    0 	    - 	    - 	    - 	    -
	pdco         	active        	    1 	    - 	    1 	    - 	    -
	quadMinos    	active        	    0 	    - 	    - 	    - 	    -
	qpng         	passive       	    - 	    - 	    1 	    - 	    -
	tomlab_snopt 	passive       	    - 	    - 	    - 	    - 	    0
	gurobi_mex   	legacy        	    0 	    0 	    0 	    0 	    -
	lindo_old    	legacy        	    0 	    - 	    - 	    - 	    -
	lindo_legacy 	legacy        	    0 	    - 	    - 	    - 	    -
	lp_solve     	legacy        	    1 	    - 	    - 	    - 	    -
	opti         	legacy        	    0 	    0 	    0 	    0 	    0
	----------------------------------------------------------------------
	Total        	-             	    5 	    2 	    3 	    0 	    1

 + Legend: - = not applicable, 0 = solver not compatible or not installed, 1 = solver installed.


 &gt; You can solve LP problems using: 'ibm_cplex' - 'glpk' - 'matlab' - 'pdco' - 'lp_solve' 
 &gt; You can solve MILP problems using: 'ibm_cplex' - 'glpk' 
 &gt; You can solve QP problems using: 'ibm_cplex' - 'pdco' - 'qpng' 
 &gt; You can solve MIQP problems using: 
 &gt; You can solve NLP problems using: 'matlab' 

 &gt; Checking for available updates ...
 --&gt; You cannot update your fork using updateCobraToolbox(). [06867a @ gmcs_v3].
     Please use the MATLAB.devTools (<a href="https://github.com/opencobra/MATLAB.devTools" style="white-space: normal; font-style: normal; color: rgb(0, 95, 206); font-size: 12px;">https://github.com/opencobra/MATLAB.devTools</a>).</div></div></div></div></div><div  class = 'S6'><span>Note that the approaches to search for MCS and gMCS problems are based on Mixed Integer Linear Programming (MILP). The solver selected will be Cplex.</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S4'><span style="white-space: normal"><span >changeCobraSolver(</span><span style="color: rgb(170, 4, 249);">'ibm_cplex'</span><span >, </span><span style="color: rgb(170, 4, 249);">'all'</span><span >);</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="C469915D" data-testid="output_1" data-width="428" data-height="185" data-hashorizontaloverflow="true" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> &gt; IBM ILOG CPLEX interface added to MATLAB path.
 &gt; The solver compatibility is not tested with MATLAB R2017a.
 &gt; Solver for LP problems has been set to ibm_cplex.

 &gt; IBM ILOG CPLEX interface added to MATLAB path.
 &gt; The solver compatibility is not tested with MATLAB R2017a.
 &gt; Solver for MILP problems has been set to ibm_cplex.

 &gt; IBM ILOG CPLEX interface added to MATLAB path.
 &gt; The solver compatibility is not tested with MATLAB R2017a.
 &gt; Solver for QP problems has been set to ibm_cplex.
 &gt; Solver ibm_cplex not supported for problems of type MIQP. No solver set for this problemtype 
 &gt; Solver ibm_cplex not supported for problems of type NLP. Currently used: matlab </div></div></div></div></div><h2  class = 'S3'><span>PROCEDURE</span></h2><div  class = 'S2'><span>This tutorial will be divided in two different parts. First, a toy example will be used to illustrate the difference between MCSs and gMCSs and, second, gMCSs will be calculated for Recon2.v04 metabolic model</span><span texencoding="$^4" style="vertical-align:-5px"><img src="" width="8" height="19" /></span><span>.</span></div><h2  class = 'S1'><span style=' text-decoration: underline;'>1. Toy example</span><span> (~5 sec)</span></h2><div  class = 'S2'><span>The toy example under study is presented below:</span></div><div  class = 'S7'><img class = "imageNode" src = "" width = "318" height = "192" alt = "" style = "vertical-align: baseline"></img></div><div  class = 'S2'><span>First, we are going to load the MAT-file which contains the metabolic network in the toy example.</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S8'><span style="white-space: normal"><span >load(</span><span style="color: rgb(170, 4, 249);">'gMCStoyExample.mat'</span><span >);</span></span></div></div></div><div  class = 'S6'><span>As different metabolic models in COBRA format, it contains the following fields: </span><span style=' font-style: italic;'>S</span><span>, </span><span style=' font-style: italic;'>ub</span><span>, </span><span style=' font-style: italic;'>lb</span><span>, </span><span style=' font-style: italic;'>rxns</span><span>, </span><span style=' font-style: italic;'>mets</span><span>, </span><span style=' font-style: italic;'>genes</span><span>, </span><span style=' font-style: italic;'>rules</span><span>, </span><span style=' font-style: italic;'>grRules</span><span>, </span><span style=' font-style: italic;'>rxnGeneMat </span><span>and </span><span style=' font-style: italic;'>c</span><span>.</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S4'><span style="white-space: normal"><span >rxns = model.rxns</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="31815E9A" data-testid="output_2" data-width="428" data-height="118" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">rxns = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">7×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    'r1'
    'r2'
    'r3'
    'r4'
    'r5'
    'r6'
    'rBio'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >grRules = model.grRules</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="BCDF76E2" data-testid="output_3" data-width="428" data-height="118" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">grRules = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">7×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    '(g1)'
    '(g2)'
    '(g2) or (g3)'
    '(g4)'
    '(g5) and (g6)'
    '(g5)'
    ''</div></div></div></div></div></div><div  class = 'S6'><span>We can observe that all reactions and genes have a one-to-one relationship except for </span><span style=' font-style: italic;'>r3</span><span> and </span><span style=' font-style: italic;'>r5</span><span>, which have rules containing 2 different genes and an "or" and an "and" relationship, respectively. On the other hand, </span><span style=' font-style: italic;'>g2</span><span> and </span><span style=' font-style: italic;'>g5</span><span> take part in two different reactions each. The existence of non-trivial relationships between genes and reactions are the cause of not obtaining the same solutions with MCSs and gMCSs.</span></div><div  class = 'S2'><span>We aim to calculate MCSs which will render the biomass production impossible via the function named </span><span style=' font-style: italic;'>calculateMCS()</span><span>. Therefore, the desired target metabolic task (represented in the field </span><span style=' font-style: italic;'>c</span><span> of the structure) will be the biomass reaction.</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S4'><span style="white-space: normal"><span >model.rxns(logical(model.c))</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="795FD16C" data-testid="output_4" data-width="428" data-height="34" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">cell</span></span>
    'rBio'</div></div></div></div></div></div><div  class = 'S6'><span>We will calculate 10 MCSs and we will set the length of the largest MCS to be calculated to 7 (the number of reactions), in order to calculate all the existing MCSs.</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S10'><span style="white-space: normal"><span >n_MCS = 10;</span></span></div></div><div class="inlineWrapper"><div  class = 'S11'><span style="white-space: normal"><span >max_len_MCS = 7;</span></span></div></div></div><div  class = 'S6'><span>Now, the different optional arguments of the function must be set, if needed. In this case, we will calculate MCSs involving reactions 1 to 6. The biomass reaction (</span><span style=' font-style: italic;'>rBio</span><span>) is omitted since it is the target metabolic task. </span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S8'><span style="white-space: normal"><span >optional_inputs.rxn_set = {</span><span style="color: rgb(170, 4, 249);">'r1'</span><span >; </span><span style="color: rgb(170, 4, 249);">'r2'</span><span >; </span><span style="color: rgb(170, 4, 249);">'r3'</span><span >; </span><span style="color: rgb(170, 4, 249);">'r4'</span><span >; </span><span style="color: rgb(170, 4, 249);">'r5'</span><span >; </span><span style="color: rgb(170, 4, 249);">'r6'</span><span >};</span></span></div></div></div><div  class = 'S6'><span>The time limit for the calculation of each MCS will be set to 30 seconds.</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S8'><span style="white-space: normal"><span >optional_inputs.timelimit = 30;</span></span></div></div></div><div  class = 'S6'><span>Although not shown here, other optional arguments may be set, as detailed in the documentation of the function. </span></div><div  class = 'S2'><span>We will now proceed with the calculation of the MCSs.</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S4'><span style="white-space: normal"><span >[MCSs, MCS_time] = calculateMCS(model, n_MCS, max_len_MCS, optional_inputs);</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="B6C277C5" data-testid="output_5" data-width="428" data-height="6415" data-hashorizontaloverflow="true" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Tried aggregator 2 times.
MIP Presolve eliminated 2 rows and 4 columns.
Aggregator did 3 substitutions.
Reduced MIP has 10 rows, 12 columns, and 26 nonzeros.
Reduced MIP has 6 binaries, 0 generals, 0 SOSs, and 6 indicators.
Presolve time = 0.00 sec. (0.02 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.06 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.06 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Tried aggregator 2 times.
MIP Presolve eliminated 2 rows and 4 columns.
Aggregator did 3 substitutions.
Reduced MIP has 10 rows, 12 columns, and 26 nonzeros.
Reduced MIP has 6 binaries, 0 generals, 0 SOSs, and 6 indicators.
Presolve time = 0.00 sec. (0.02 ticks)
Found incumbent of value 2.000000 after 0.00 sec. (0.03 ticks)
Probing time = 0.00 sec. (0.00 ticks)
Tried aggregator 1 time.
Reduced MIP has 10 rows, 12 columns, and 26 nonzeros.
Reduced MIP has 6 binaries, 0 generals, 0 SOSs, and 6 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Probing time = 0.00 sec. (0.00 ticks)
MIP emphasis: hidden feasible solutions.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 8 threads.
Root relaxation solution time = 0.00 sec. (0.01 ticks)

        Nodes                                         Cuts/
   Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap

*     0+    0                            2.0000        0.0000           100.00%
      0     0        cutoff              2.0000                      0    0.00%

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.07 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.07 ticks)

Populate: phase II 
MIP emphasis: hidden feasible solutions.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 8 threads.

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.01 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.01 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 17 rows, 20 columns, and 43 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 1 MIP starts.
Retaining values of one MIP start for possible repair.
Tried aggregator 2 times.
MIP Presolve eliminated 2 rows and 5 columns.
Aggregator did 3 substitutions.
Reduced MIP has 11 rows, 12 columns, and 28 nonzeros.
Reduced MIP has 6 binaries, 0 generals, 0 SOSs, and 6 indicators.
Presolve time = 0.00 sec. (0.02 ticks)
Probing time = 0.00 sec. (0.00 ticks)
Tried aggregator 1 time.
Reduced MIP has 11 rows, 12 columns, and 28 nonzeros.
Reduced MIP has 6 binaries, 0 generals, 0 SOSs, and 6 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Probing time = 0.00 sec. (0.00 ticks)
Clique table members: 1.
MIP emphasis: hidden feasible solutions.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 8 threads.
Root relaxation solution time = 0.00 sec. (0.01 ticks)

        Nodes                                         Cuts/
   Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap

      0     0        2.0000     1                      2.0000        0         
*     0+    0                            2.0000        2.0000             0.00%

Root node processing (before b&amp;c):
  Real time             =    0.02 sec. (0.16 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.02 sec. (0.16 ticks)

Populate: phase II 
MIP emphasis: hidden feasible solutions.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 8 threads.

Root node processing (before b&amp;c):
  Real time             =    0.02 sec. (0.09 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.33 sec. (0.11 ticks)
  Sync time (average)   =    0.24 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.34 sec. (0.20 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 20 rows, 23 columns, and 52 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 3 MIP starts.
Retaining values of one MIP start for possible repair.
Tried aggregator 2 times.
MIP Presolve eliminated 2 rows and 8 columns.
Aggregator did 3 substitutions.
Reduced MIP has 14 rows, 12 columns, and 34 nonzeros.
Reduced MIP has 6 binaries, 0 generals, 0 SOSs, and 6 indicators.
Presolve time = 0.00 sec. (0.03 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.11 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.11 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 20 rows, 23 columns, and 52 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 3 MIP starts.
Retaining values of one MIP start for possible repair.
Tried aggregator 2 times.
MIP Presolve eliminated 2 rows and 8 columns.
Aggregator did 3 substitutions.
Reduced MIP has 14 rows, 12 columns, and 34 nonzeros.
Reduced MIP has 6 binaries, 0 generals, 0 SOSs, and 6 indicators.
Presolve time = 0.02 sec. (0.03 ticks)
Probing fixed 4 vars, tightened 3 bounds.
Probing time = 0.00 sec. (0.00 ticks)
Tried aggregator 2 times.
MIP Presolve eliminated 10 rows and 8 columns.
Aggregator did 1 substitutions.
Reduced MIP has 3 rows, 3 columns, and 6 nonzeros.
Reduced MIP has 1 binaries, 0 generals, 0 SOSs, and 2 indicators.
Presolve time = 0.02 sec. (0.01 ticks)
Probing time = 0.00 sec. (0.00 ticks)
Tried aggregator 1 time.
Reduced MIP has 3 rows, 3 columns, and 6 nonzeros.
Reduced MIP has 1 binaries, 0 generals, 0 SOSs, and 2 indicators.
Presolve time = 0.00 sec. (0.00 ticks)
Probing time = 0.00 sec. (0.00 ticks)
Clique table members: 1.
MIP emphasis: hidden feasible solutions.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 8 threads.
Root relaxation solution time = 0.00 sec. (0.00 ticks)

        Nodes                                         Cuts/
   Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap

*     0     0      integral     0        3.0000        3.0000        0    0.00%

Root node processing (before b&amp;c):
  Real time             =    0.05 sec. (2.06 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.05 sec. (2.06 ticks)

Populate: phase II 
MIP emphasis: hidden feasible solutions.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 8 threads.

        Nodes                                         Cuts/
   Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap

      0     2        3.0000     1        3.0000        3.0000        0    0.00%
Elapsed time = 0.05 sec. (2.08 ticks, tree = 0.01 MB, solutions = 1)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.02 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.01 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.03 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 22 rows, 25 columns, and 60 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 2 MIP starts.
Retaining values of one MIP start for possible repair.
Tried aggregator 2 times.
MIP Presolve eliminated 2 rows and 10 columns.
Aggregator did 3 substitutions.
Reduced MIP has 16 rows, 12 columns, and 40 nonzeros.
Reduced MIP has 6 binaries, 0 generals, 0 SOSs, and 6 indicators.
Presolve time = 0.00 sec. (0.04 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.02 sec. (0.12 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.02 sec. (0.12 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 22 rows, 25 columns, and 60 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 2 MIP starts.
Retaining values of one MIP start for possible repair.
Row 'c6' infeasible, all entries at implied bounds.
Presolve time = 0.00 sec. (0.02 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.04 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.04 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 22 rows, 25 columns, and 60 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 2 MIP starts.
Retaining values of one MIP start for possible repair.
Row 'c9' infeasible, all entries at implied bounds.
Presolve time = 0.00 sec. (0.02 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.04 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.04 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 22 rows, 25 columns, and 60 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 2 MIP starts.
Retaining values of one MIP start for possible repair.
Presolve time = 0.00 sec. (0.00 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.02 sec. (0.02 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.02 sec. (0.02 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 22 rows, 25 columns, and 60 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 2 MIP starts.
Retaining values of one MIP start for possible repair.
Presolve time = 0.00 sec. (0.00 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.02 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.02 ticks)</div></div></div></div></div><div  class = 'S6'><span>Despite having tried to calculate 10 MCSs, only 6 exist for this Toy Example. The results are shown in the following piece of code:</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S4'><span style="white-space: normal"><span >MCSs{1}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="42D13E5B" data-testid="output_6" data-width="428" data-height="48" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">2×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    'r5'
    'r6'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >MCSs{2}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="1F9894BD" data-testid="output_7" data-width="428" data-height="48" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">2×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    'r1'
    'r6'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >MCSs{3}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="3CAB2A05" data-testid="output_8" data-width="428" data-height="48" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">2×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    'r1'
    'r4'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >MCSs{4}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="4A99233A" data-testid="output_9" data-width="428" data-height="48" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">2×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    'r2'
    'r6'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >MCSs{5}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="32E733AC" data-testid="output_10" data-width="428" data-height="62" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">3×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    'r2'
    'r3'
    'r4'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >MCSs{6}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="BE50E017" data-testid="output_11" data-width="428" data-height="62" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">3×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    'r3'
    'r4'
    'r5'</div></div></div></div></div></div><div  class = 'S6'><span>We now translate these minimal reaction knockout strategies to the gene level following the </span><span style=' font-style: italic;'>grRules</span><span>. The following table shows the genetic interventions which must be fulfiilled to accomplish the respective reaction knockouts:</span></div><div  class = 'S7'><img class = "imageNode" src = "" width = "544" height = "225" alt = "" style = "vertical-align: baseline"></img></div><div  class = 'S2'><span>In order to check if the gene knockouts that have to be carried out to perform the inhibition of the found MCSs are minimal, we will calculate gMCSs for the same toy example using the function </span><span style=' font-style: italic;'>calculateGeneMCS()</span><span>.</span></div><div  class = 'S2'><span>First, we need to define the name of the model to create the gene knockout constraints matrix, </span><span style=' font-style: italic;'>G</span><span>. The binary </span><span style=' font-style: italic;'>G </span><span>matrix defines for each row the set of blocked reactions arising from the knockout of an irreducible subset of genes. The subset of genes associated with each row in G is interrelated and their simultaneous knockout is required to delete at least one of the reactions in the metabolic network. This matrix may be needed for other calculations. We will name here 'toy_example_gMCS' and again will calculate 10 gMCSs. The function will look for the G matrix in ['G_' model_name '.mat'] (here “G_toy_example_gMCS.mat). If this structure is not available, the function buildGmatrix() is called and the G matrix for the model under consideration generated and saved. In this case, the length of the largest gMCS calculated will be set to 6 (the number of genes).</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S10'><span style="white-space: normal"><span >model_name = </span><span style="color: rgb(170, 4, 249);">'toy_example_gMCS'</span><span >;</span></span></div></div><div class="inlineWrapper"><div  class = 'S12'><span style="white-space: normal"><span >n_gMCS = 10;</span></span></div></div><div class="inlineWrapper"><div  class = 'S11'><span style="white-space: normal"><span >max_len_gMCS = 6;</span></span></div></div></div><div  class = 'S6'><span>Next, we set the optional inputs. The maximum time for the calculation of each gMCS will be 30 seconds.</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S8'><span style="white-space: normal"><span >optional_inputs.timelimit = 30;</span></span></div></div></div><div  class = 'S6'><span>Note that, again, some more optional inputs may be set, as detailed in the documentation of the function. However, they are not needed for the calculation of the problem presented in this tutorial.</span></div><div  class = 'S2'><span>We will now proceed with the calculation of the gMCSs.</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S4'><span style="white-space: normal"><span >[gMCSs, gMCS_time] = calculateGeneMCS(model_name, model, n_gMCS, max_len_gMCS, optional_inputs);</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="04D78777" data-testid="output_12" data-width="428" data-height="5869" data-hashorizontaloverflow="true" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">G MATRIX - Summary
    'n_rxns_0_genes'     [1]
    'n_rxns_1_gene'      [4]
    'n_rxns_only_or'     [1]
    'n_rxns_only_and'    [1]
    'n_rxns_or_and'      [0]
    'n_rxns_total'       [7]
G MATRIX - STEP 1
G MATRIX - STEP 2
G MATRIX - STEP 3
G MATRIX - STEP 4

G MATRIX - Delete Repeats
G MATRIX - Check Relations
The G Matrix has been successfully calculated
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Tried aggregator 2 times.
MIP Presolve eliminated 4 rows and 6 columns.
MIP Presolve modified 2 coefficients.
Aggregator did 3 substitutions.
Reduced MIP has 8 rows, 10 columns, and 19 nonzeros.
Reduced MIP has 5 binaries, 0 generals, 0 SOSs, and 5 indicators.
Presolve time = 0.00 sec. (0.03 ticks)
Probing fixed 5 vars, tightened 5 bounds.
Probing time = 0.00 sec. (0.00 ticks)
Tried aggregator 1 time.
MIP Presolve eliminated 8 rows and 10 columns.
All rows and columns eliminated.
Presolve time = 0.00 sec. (0.01 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.02 sec. (0.06 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.02 sec. (0.06 ticks)

Populate: phase II 
Tried aggregator 2 times.
MIP Presolve eliminated 4 rows and 6 columns.
MIP Presolve modified 2 coefficients.
Aggregator did 3 substitutions.
Reduced MIP has 8 rows, 10 columns, and 19 nonzeros.
Reduced MIP has 5 binaries, 0 generals, 0 SOSs, and 5 indicators.
Presolve time = 0.00 sec. (0.03 ticks)
Probing fixed 5 vars, tightened 5 bounds.
Probing time = 0.00 sec. (0.00 ticks)
Clique table members: 1.
MIP emphasis: hidden feasible solutions.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 8 threads.
Root relaxation solution time = 0.00 sec. (0.00 ticks)

        Nodes                                         Cuts/
   Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap

*     0+    0                            1.0000        0.0000           100.00%
      0     0        1.0000     0        1.0000        1.0000        0    0.00%
      0     0        1.0000     0        1.0000        1.0000        0    0.00%
Elapsed time = 0.02 sec. (0.15 ticks, tree = 0.01 MB, solutions = 1)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.08 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.01 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.09 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 18 rows, 19 columns, and 45 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 1 MIP starts.
Retaining values of one MIP start for possible repair.
Row 'c3' infeasible, all entries at implied bounds.
Presolve time = 0.00 sec. (0.01 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.03 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.03 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 18 rows, 19 columns, and 45 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 1 MIP starts.
Retaining values of one MIP start for possible repair.
Tried aggregator 2 times.
MIP Presolve eliminated 7 rows and 10 columns.
MIP Presolve modified 2 coefficients.
Aggregator did 3 substitutions.
Reduced MIP has 5 rows, 6 columns, and 10 nonzeros.
Reduced MIP has 3 binaries, 0 generals, 0 SOSs, and 3 indicators.
Presolve time = 0.00 sec. (0.03 ticks)
Probing fixed 3 vars, tightened 2 bounds.
Probing time = 0.00 sec. (0.00 ticks)
Tried aggregator 1 time.
MIP Presolve eliminated 5 rows and 6 columns.
All rows and columns eliminated.
Presolve time = 0.00 sec. (0.00 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.05 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.05 ticks)

Populate: phase II 
Tried aggregator 2 times.
MIP Presolve eliminated 7 rows and 10 columns.
MIP Presolve modified 2 coefficients.
Aggregator did 3 substitutions.
Reduced MIP has 5 rows, 6 columns, and 10 nonzeros.
Reduced MIP has 3 binaries, 0 generals, 0 SOSs, and 3 indicators.
Presolve time = 0.00 sec. (0.03 ticks)
Probing fixed 3 vars, tightened 2 bounds.
Probing time = 0.00 sec. (0.00 ticks)
Clique table members: 1.
MIP emphasis: hidden feasible solutions.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 8 threads.
Root relaxation solution time = 0.00 sec. (0.00 ticks)

        Nodes                                         Cuts/
   Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap

*     0+    0                            2.0000        1.0000            50.00%
      0     0        2.0000     0        2.0000        2.0000        0    0.00%
      0     0        2.0000     0        2.0000        2.0000        0    0.00%
Elapsed time = 0.02 sec. (0.12 ticks, tree = 0.01 MB, solutions = 1)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.06 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.27 sec. (0.01 ticks)
  Sync time (average)   =    0.21 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.27 sec. (0.07 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 19 rows, 20 columns, and 48 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 1 MIP starts.
Retaining values of one MIP start for possible repair.
Row 'c3' infeasible, all entries at implied bounds.
Presolve time = 0.02 sec. (0.02 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.02 sec. (0.04 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.02 sec. (0.04 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 19 rows, 20 columns, and 48 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 1 MIP starts.
Retaining values of one MIP start for possible repair.
Tried aggregator 1 time.
MIP Presolve eliminated 13 rows and 20 columns.
All rows and columns eliminated.
Presolve time = 0.00 sec. (0.03 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.04 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.04 ticks)

Populate: phase II 
Tried aggregator 1 time.
MIP Presolve eliminated 13 rows and 20 columns.
All rows and columns eliminated.
Presolve time = 0.00 sec. (0.03 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.03 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.03 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 20 rows, 21 columns, and 52 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 1 MIP starts.
Retaining values of one MIP start for possible repair.
Row 'c3' infeasible, all entries at implied bounds.
Presolve time = 0.00 sec. (0.02 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.04 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.04 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 20 rows, 21 columns, and 52 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 1 MIP starts.
Retaining values of one MIP start for possible repair.
Row 'c10' infeasible, all entries at implied bounds.
Presolve time = 0.00 sec. (0.02 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.03 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.03 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 20 rows, 21 columns, and 52 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 1 MIP starts.
Retaining values of one MIP start for possible repair.
Presolve time = 0.00 sec. (0.00 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.02 sec. (0.02 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.02 sec. (0.02 ticks)
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               30
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Reduced MIP has 20 rows, 21 columns, and 52 nonzeros.
Reduced MIP has 7 binaries, 0 generals, 0 SOSs, and 7 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Warning:  No solution found from 1 MIP starts.
Retaining values of one MIP start for possible repair.
Presolve time = 0.00 sec. (0.00 ticks)

Root node processing (before b&amp;c):
  Real time             =    0.00 sec. (0.02 ticks)
Parallel b&amp;c, 8 threads:
  Real time             =    0.00 sec. (0.00 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&amp;cut) =    0.00 sec. (0.02 ticks)</div></div></div></div></div><div  class = 'S6'><span>In the same way as with MCSs, 3 gMCSs have been calculated in total.</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S4'><span style="white-space: normal"><span >gMCSs{1}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="113394A9" data-testid="output_13" data-width="428" data-height="34" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">cell</span></span>
    'g5'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >gMCSs{2}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="2E74FDA8" data-testid="output_14" data-width="428" data-height="48" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">2×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    'g1'
    'g4'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >gMCSs{3}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="ADC8722D" data-testid="output_15" data-width="428" data-height="62" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">3×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    'g2'
    'g3'
    'g4'</div></div></div></div></div></div><div  class = 'S6'><span>As shown in the previous table, calculating MCSs would result in 8 different genetic intervention strategies even when, as we have just demonstrated, only 3 minimal genetic interventions exist. Moving on to gMCSs seems, therefore, a more efficient strategy to calculate minimal gene knockout strategies.</span></div><h2  class = 'S3'><span style=' text-decoration: underline;'>2. gMCSs in large metabolic networks</span><span> (20 min ~ 1 hour)</span></h2><div  class = 'S2'><span>The algorithm presented in this tutorial is able to calculate intervention strategies in large metabolic networks. In addition, it is sufficiently flexible to calculate gMCSs involving a particular gene knockout. Interesting results regarding this issue can be found in Apaolaza et al., 2017(a)</span><span texencoding="$ ^2" style="vertical-align:-5px"><img src="" width="8" height="19" /></span><span>.</span></div><div  class = 'S2'><span>We are now going to calculate 6 gMCSs for the human metabolic model Recon2.v04</span><span texencoding="$^4" style="vertical-align:-5px"><img src="" width="8" height="19" /></span><span> involving gene RRM1 (Entrez ID: 6240). To do so, the folllowing piece of code has to be executed.</span></div><div  class = 'S2'><span>First, we are going to load the metabolic model.</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S10'><span style="white-space: normal"><span style="color: rgb(14, 0, 255);">global </span><span >CBTDIR</span></span></div></div><div class="inlineWrapper"><div  class = 'S11'><span style="white-space: normal"><span >load([CBTDIR filesep </span><span style="color: rgb(170, 4, 249);">'test' </span><span >filesep </span><span style="color: rgb(170, 4, 249);">'models' </span><span >filesep </span><span style="color: rgb(170, 4, 249);">'mat' </span><span >filesep </span><span style="color: rgb(170, 4, 249);">'Recon2.v04.mat'</span><span >]);</span></span></div></div></div><div  class = 'S6'><span>Next, in the same way as in the toy example, we will proceed to set the name of the model ('Recon2'), the number of gMCSs to be calculated (6), the length of the largest gMCS we want to calculate (10) and the optional input variables. Regarding the latter, the maximum time for the calculation of gMCSs will be set to 2 minutes (120 seconds), the KO will be '6240', namely the Entrez ID of RRM1. In this case, we will also have to set the  "separate_transcript" field to '.', because, if we do not, the calculation of gMCSs will be done at the transcript level as a consequence of the usage of the aforementioned character in Recon2.v04 to differentiate the transcripts of the same gene.</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S10'><span style="white-space: normal"><span >model_name = </span><span style="color: rgb(170, 4, 249);">'Recon2'</span><span >;</span></span></div></div><div class="inlineWrapper"><div  class = 'S12'><span style="white-space: normal"><span >n_gMCS = 6;</span></span></div></div><div class="inlineWrapper"><div  class = 'S12'><span style="white-space: normal"><span >max_len_gMCS = 10;</span></span></div></div><div class="inlineWrapper"><div  class = 'S12'><span style="white-space: normal"><span >optional_inputs.KO = </span><span style="color: rgb(170, 4, 249);">'6240'</span><span >;</span></span></div></div><div class="inlineWrapper"><div  class = 'S12'><span style="white-space: normal"><span >optional_inputs.separate_transcript = </span><span style="color: rgb(170, 4, 249);">'.'</span><span >;</span></span></div></div><div class="inlineWrapper"><div  class = 'S11'><span style="white-space: normal"><span >optional_inputs.timelimit = 2*60;</span></span></div></div></div><div  class = 'S6'><span>Finally, we will calculate the gMCSs. Turning the parallel pool on is recommended if the G matrix has not been calculated yet.</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S10'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% parpool;</span></span></div></div><div class="inlineWrapper outputs"><div  class = 'S13'><span style="white-space: normal"><span >[gMCSs, gMCS_time] = calculateGeneMCS(model_name, modelR204, n_gMCS, max_len_gMCS, optional_inputs);</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="AEC3C88D" data-testid="output_16" data-width="428" data-height="4021" data-hashorizontaloverflow="true" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">G MATRIX - Summary
    'n_rxns_0_genes'     [2619]
    'n_rxns_1_gene'      [2917]
    'n_rxns_only_or'     [1426]
    'n_rxns_only_and'    [ 231]
    'n_rxns_or_and'      [ 247]
    'n_rxns_total'       [7440]
G MATRIX - STEP 1
G MATRIX - STEP 2
G MATRIX - STEP 3
Calculating Networks for GPR rules...
156 of 247 rxns
155 of 247 rxns
84 of 247 rxns
83 of 247 rxns
125 of 247 rxns
124 of 247 rxns
42 of 247 rxns
41 of 247 rxns
154 of 247 rxns
153 of 247 rxns
152 of 247 rxns
151 of 247 rxns
150 of 247 rxns
149 of 247 rxns
148 of 247 rxns
147 of 247 rxns
146 of 247 rxns
145 of 247 rxns
144 of 247 rxns
143 of 247 rxns
142 of 247 rxns
141 of 247 rxns
140 of 247 rxns
139 of 247 rxns
138 of 247 rxns
137 of 247 rxns
136 of 247 rxns
135 of 247 rxns
134 of 247 rxns
133 of 247 rxns
132 of 247 rxns
131 of 247 rxns
130 of 247 rxns
129 of 247 rxns
128 of 247 rxns
127 of 247 rxns
126 of 247 rxns
82 of 247 rxns
81 of 247 rxns
80 of 247 rxns
79 of 247 rxns
78 of 247 rxns
77 of 247 rxns
76 of 247 rxns
75 of 247 rxns
74 of 247 rxns
73 of 247 rxns
72 of 247 rxns
71 of 247 rxns
70 of 247 rxns
69 of 247 rxns
68 of 247 rxns
67 of 247 rxns
66 of 247 rxns
65 of 247 rxns
64 of 247 rxns
63 of 247 rxns
123 of 247 rxns
122 of 247 rxns
121 of 247 rxns
120 of 247 rxns
119 of 247 rxns
118 of 247 rxns
117 of 247 rxns
116 of 247 rxns
115 of 247 rxns
114 of 247 rxns
113 of 247 rxns
112 of 247 rxns
111 of 247 rxns
110 of 247 rxns
40 of 247 rxns
39 of 247 rxns
38 of 247 rxns
37 of 247 rxns
36 of 247 rxns
35 of 247 rxns
34 of 247 rxns
33 of 247 rxns
32 of 247 rxns
31 of 247 rxns
30 of 247 rxns
29 of 247 rxns
28 of 247 rxns
27 of 247 rxns
26 of 247 rxns
25 of 247 rxns
24 of 247 rxns
62 of 247 rxns
61 of 247 rxns
60 of 247 rxns
59 of 247 rxns
58 of 247 rxns
57 of 247 rxns
56 of 247 rxns
55 of 247 rxns
54 of 247 rxns
53 of 247 rxns
52 of 247 rxns
51 of 247 rxns
50 of 247 rxns
49 of 247 rxns
48 of 247 rxns
47 of 247 rxns
46 of 247 rxns
45 of 247 rxns
44 of 247 rxns
43 of 247 rxns
109 of 247 rxns
108 of 247 rxns
107 of 247 rxns
106 of 247 rxns
105 of 247 rxns
104 of 247 rxns
103 of 247 rxns
102 of 247 rxns
101 of 247 rxns
100 of 247 rxns
99 of 247 rxns
98 of 247 rxns
97 of 247 rxns
96 of 247 rxns
95 of 247 rxns
94 of 247 rxns
93 of 247 rxns
92 of 247 rxns
91 of 247 rxns
90 of 247 rxns
89 of 247 rxns
88 of 247 rxns
87 of 247 rxns
86 of 247 rxns
85 of 247 rxns
179 of 247 rxns
178 of 247 rxns
177 of 247 rxns
176 of 247 rxns
175 of 247 rxns
174 of 247 rxns
173 of 247 rxns
172 of 247 rxns
171 of 247 rxns
170 of 247 rxns
169 of 247 rxns
168 of 247 rxns
167 of 247 rxns
166 of 247 rxns
165 of 247 rxns
164 of 247 rxns
163 of 247 rxns
162 of 247 rxns
161 of 247 rxns
160 of 247 rxns
159 of 247 rxns
158 of 247 rxns
157 of 247 rxns
196 of 247 rxns
195 of 247 rxns
194 of 247 rxns
193 of 247 rxns
192 of 247 rxns
191 of 247 rxns
190 of 247 rxns
189 of 247 rxns
188 of 247 rxns
187 of 247 rxns
186 of 247 rxns
185 of 247 rxns
184 of 247 rxns
183 of 247 rxns
182 of 247 rxns
181 of 247 rxns
180 of 247 rxns
219 of 247 rxns
218 of 247 rxns
217 of 247 rxns
216 of 247 rxns
215 of 247 rxns
214 of 247 rxns
213 of 247 rxns
212 of 247 rxns
211 of 247 rxns
210 of 247 rxns
226 of 247 rxns
225 of 247 rxns
224 of 247 rxns
223 of 247 rxns
222 of 247 rxns
221 of 247 rxns
220 of 247 rxns
233 of 247 rxns
232 of 247 rxns
231 of 247 rxns
230 of 247 rxns
229 of 247 rxns
228 of 247 rxns
227 of 247 rxns
240 of 247 rxns
239 of 247 rxns
238 of 247 rxns
237 of 247 rxns
236 of 247 rxns
235 of 247 rxns
234 of 247 rxns
247 of 247 rxns
246 of 247 rxns
245 of 247 rxns
244 of 247 rxns
243 of 247 rxns
242 of 247 rxns
241 of 247 rxns
209 of 247 rxns
208 of 247 rxns
207 of 247 rxns
206 of 247 rxns
205 of 247 rxns
204 of 247 rxns
203 of 247 rxns
202 of 247 rxns
201 of 247 rxns
200 of 247 rxns
199 of 247 rxns
198 of 247 rxns
197 of 247 rxns
23 of 247 rxns
22 of 247 rxns
21 of 247 rxns
20 of 247 rxns
19 of 247 rxns
18 of 247 rxns
17 of 247 rxns
16 of 247 rxns
15 of 247 rxns
14 of 247 rxns
13 of 247 rxns
12 of 247 rxns
11 of 247 rxns
10 of 247 rxns
9 of 247 rxns
8 of 247 rxns
7 of 247 rxns
6 of 247 rxns
5 of 247 rxns
4 of 247 rxns
3 of 247 rxns
2 of 247 rxns
1 of 247 rxns
G MATRIX - STEP 4

0%      [                                        ]0%      [                                        ]1%      [                                        ]1%      [                                        ]2%      [                                        ]2%      [                                        ]2%      [                                        ]3%      [.                                       ]3%      [.                                       ]4%      [.                                       ]4%      [.                                       ]4%      [.                                       ]5%      [..                                      ]5%      [..                                      ]6%      [..                                      ]6%      [..                                      ]6%      [..                                      ]7%      [..                                      ]7%      [..                                      ]8%      [...                                     ]8%      [...                                     ]8%      [...                                     ]9%      [...                                     ]9%      [...                                     ]10%     [....                                    ]10%     [....                                    ]10%     [....                                    ]11%     [....                                    ]11%     [....                                    ]12%     [....                                    ]12%     [....                                    ]12%     [....                                    ]13%     [.....                                   ]13%     [.....                                   ]14%     [.....                                   ]14%     [.....                                   ]14%     [.....                                   ]15%     [......                                  ]15%     [......                                  ]16%     [......                                  ]16%     [......                                  ]17%     [......                                  ]17%     [......                                  ]17%     [......                                  ]18%     [.......                                 ]18%     [.......                                 ]19%     [.......                                 ]19%     [.......                                 ]19%     [.......                                 ]20%     [........                                ]20%     [........                                ]21%     [........                                ]21%     [........                                ]21%     [........                                ]22%     [........                                ]22%     [........                                ]23%     [.........                               ]23%     [.........                               ]23%     [.........                               ]24%     [.........                               ]24%     [.........                               ]25%     [..........                              ]25%     [..........                              ]25%     [..........                              ]26%     [..........                              ]26%     [..........                              ]27%     [..........                              ]27%     [..........                              ]27%     [..........                              ]28%     [...........                             ]28%     [...........                             ]29%     [...........                             ]29%     [...........                             ]29%     [...........                             ]30%     [............                            ]30%     [............                            ]31%     [............                            ]31%     [............                            ]31%     [............                            ]32%     [............                            ]32%     [............                            ]33%     [.............                           ]33%     [.............                           ]34%     [.............                           ]34%     [.............                           ]34%     [.............                           ]35%     [..............                          ]35%     [..............                          ]36%     [..............                          ]36%     [..............                          ]36%     [..............                          ]37%     [..............                          ]37%     [..............                          ]38%     [...............                         ]38%     [...............                         ]38%     [...............                         ]39%     [...............                         ]39%     [...............                         ]40%     [................                        ]40%     [................                        ]40%     [................                        ]41%     [................                        ]41%     [................                        ]42%     [................                        ]42%     [................                        ]42%     [................                        ]43%     [.................                       ]43%     [.................                       ]44%     [.................                       ]44%     [.................                       ]44%     [.................                       ]45%     [..................                      ]45%     [..................                      ]46%     [..................                      ]46%     [..................                      ]46%     [..................                      ]47%     [..................                      ]47%     [..................                      ]48%     [...................                     ]48%     [...................                     ]48%     [...................                     ]49%     [...................                     ]49%     [...................                     ]50%     [....................                    ]50%     [....................                    ]51%     [....................                    ]51%     [....................                    ]51%     [....................                    ]52%     [....................                    ]52%     [....................                    ]53%     [.....................                   ]53%     [.....................                   ]53%     [.....................                   ]54%     [.....................                   ]54%     [.....................                   ]55%     [......................                  ]55%     [......................                  ]55%     [......................                  ]56%     [......................                  ]56%     [......................                  ]57%     [......................                  ]57%     [......................                  ]57%     [......................                  ]58%     [.......................                 ]58%     [.......................                 ]59%     [.......................                 ]59%     [.......................                 ]59%     [.......................                 ]60%     [........................                ]60%     [........................                ]61%     [........................                ]61%     [........................                ]61%     [........................                ]62%     [........................                ]62%     [........................                ]63%     [.........................               ]63%     [.........................               ]63%     [.........................               ]64%     [.........................               ]64%     [.........................               ]65%     [..........................              ]65%     [..........................              ]65%     [..........................              ]66%     [..........................              ]66%     [..........................              ]67%     [..........................              ]67%     [..........................              ]68%     [...........................             ]68%     [...........................             ]68%     [...........................             ]69%     [...........................             ]69%     [...........................             ]70%     [............................            ]70%     [............................            ]70%     [............................            ]71%     [............................            ]71%     [............................            ]72%     [............................            ]72%     [............................            ]72%     [............................            ]73%     [.............................           ]73%     [.............................           ]74%     [.............................           ]74%     [.............................           ]74%     [.............................           ]75%     [..............................          ]75%     [..............................          ]76%     [..............................          ]76%     [..............................          ]76%     [..............................          ]77%     [..............................          ]77%     [..............................          ]78%     [...............................         ]78%     [...............................         ]78%     [...............................         ]79%     [...............................         ]79%     [...............................         ]80%     [................................        ]80%     [................................        ]80%     [................................        ]81%     [................................        ]81%     [................................        ]82%     [................................        ]82%     [................................        ]82%     [................................        ]83%     [.................................       ]83%     [.................................       ]84%     [.................................       ]84%     [.................................       ]85%     [..................................      ]85%     [..................................      ]85%     [..................................      ]86%     [..................................      ]86%     [..................................      ]87%     [..................................      ]87%     [..................................      ]87%     [..................................      ]88%     [...................................     ]88%     [...................................     ]89%     [...................................     ]89%     [...................................     ]89%     [...................................     ]90%     [....................................    ]90%     [....................................    ]91%     [....................................    ]91%     [....................................    ]91%     [....................................    ]92%     [....................................    ]92%     [....................................    ]93%     [.....................................   ]93%     [.....................................   ]93%     [.....................................   ]94%     [.....................................   ]94%     [.....................................   ]95%     [......................................  ]95%     [......................................  ]95%     [......................................  ]96%     [......................................  ]96%     [......................................  ]97%     [......................................  ]97%     [......................................  ]97%     [......................................  ]98%     [....................................... ]98%     [....................................... ]99%     [....................................... ]99%     [....................................... ]100%    [........................................]
G MATRIX - Delete Repeats
G MATRIX - Check Relations
The G Matrix has been successfully calculated
CPXPARAM_Preprocessing_Fill                      50
CPXPARAM_Preprocessing_Aggregator                50
CPXPARAM_Preprocessing_Dependency                1
CPXPARAM_TimeLimit                               120
CPXPARAM_Preprocessing_Dual                      1
CPXPARAM_Preprocessing_NumPass                   50
CPXPARAM_Output_CloneLog                         -1
CPXPARAM_Preprocessing_CoeffReduce               2
CPXPARAM_Preprocessing_BoundStrength             1
CPXPARAM_MIP_Strategy_HeuristicFreq              1000
CPXPARAM_Preprocessing_Relax                     1
CPXPARAM_Emphasis_MIP                            4
CPXPARAM_Preprocessing_Symmetry                  1
CPXPARAM_MIP_Strategy_RINSHeur                   50
CPXPARAM_MIP_Pool_RelGap                         0.10000000000000001
CPXPARAM_MIP_Limits_Populate                     40

Populate: phase I 
Tried aggregator 12 times.
MIP Presolve eliminated 9344 rows and 10469 columns.
MIP Presolve modified 9523 coefficients.
Aggregator did 3520 substitutions.
Reduced MIP has 7520 rows, 7817 columns, and 46898 nonzeros.</div></div></div></div></div><div  class = 'S6'><span>The results obtained are the following:</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S4'><span style="white-space: normal"><span >gMCSs{1}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="D310836A" data-testid="output_17" data-width="428" data-height="48" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">2×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    '2987'
    '6240'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >gMCSs{2}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="83CF7F74" data-testid="output_18" data-width="428" data-height="62" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">3×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    '1716'
    '6240'
    '7296'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >gMCSs{3}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="542780F2" data-testid="output_19" data-width="428" data-height="62" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">3×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    '1716'
    '50484'
    '6240'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >gMCSs{4}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="8D639478" data-testid="output_20" data-width="428" data-height="76" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">4×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    '1633'
    '1635'
    '6240'
    '7296'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >gMCSs{5}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="66AFF11C" data-testid="output_21" data-width="428" data-height="76" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">4×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    '26289'
    '51727'
    '6240'
    '7296'</div></div></div></div></div><div class="inlineWrapper outputs"><div  class = 'S9'><span style="white-space: normal"><span >gMCSs{6}</span></span></div><div  class = 'S5'><div class="inlineElement eoOutputWrapper embeddedOutputsVariableStringElement" uid="07D5E89E" data-testid="output_22" data-width="428" data-height="90" data-hashorizontaloverflow="false" style="width: 458px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><span class="variableNameElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ans = <span class="headerElement" style="white-space: normal; font-style: italic; color: rgb(179, 179, 179); font-size: 12px;">5×1 cell array</span></span></div><div style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">    '2766'
    '3251'
    '51292'
    '6240'
    '8833'</div></div></div></div></div></div><div  class = 'S6'><span>6 gMCSs have been calculated involving 2, 3, 3, 4, 4 and 5 genes, respectively. It is important to note that no more gMCSs have been found as a consequence of setting the number of gMCSs to be calculated to 6. If we increase the aforementiones input, more gMCSs involving RRM1 will be calculated. It is important to note that the calculation of a minimal intervention strategy involving 5 genes with an exhaustive combinatorial strategy is actually inviable.</span></div><h2  class = 'S3'><span>TIMING</span></h2><ol  class = 'S14'><li  class = 'S15'><span>Equipment Setup: ~25 sec.</span></li><li  class = 'S15'><span>Toy Example: ~5 sec.</span></li><li  class = 'S15'><span>gMCSs in large metabolic networks: ~5 min.</span></li></ol><div  class = 'S2'><span>Note that both </span><span style=' font-style: italic;'>calculateMCS()</span><span> and </span><span style=' font-style: italic;'>calculateGeneMCS()</span><span> functions return MCS_time and gMCS_time, respectively, which contain the timing for all the solving steps.</span></div><h2  class = 'S3'><span>REFERENCES</span></h2><div  class = 'S2'><span style=' font-style: italic;'>1. </span><span>von Kamp, A. &amp; Klamt, S. Enumeration of smallest intervention strategies in genome-scale metabolic networks.</span><span> </span><span style=' font-style: italic;'>PLoS computational biology</span><span>,</span><span> </span><span style=' font-style: italic;'>10</span><span>(1), e1003378 (2014).</span></div><div  class = 'S2'><span style=' font-style: italic;'>2. </span><span>Apaolaza, I., </span><span style=' font-style: italic;'>et al</span><span>. An in-silico approach to predict and exploit synthetic lethality in cancer metabolism.</span><span> </span><span style=' font-style: italic;'>Nature Communications</span><span>,</span><span> </span><span style=' font-style: italic;'>8</span><span>(1), 459 (2017 (a)). </span></div><div  class = 'S2'><span style=' font-style: italic;'>3. </span><span>Apaolaza, I., José-Eneriz, E. S., Agirre, X., Prósper, F. &amp; Planes, F. J. COBRA methods and metabolic drug targets in cancer.</span><span> </span><span style=' font-style: italic;'>Molecular &amp; Cellular Oncology</span><span>, (just-accepted), 00-00 (2017 (b)).</span></div><div  class = 'S2'><span style=' font-style: italic;'>4. </span><span>Thiele, I., </span><span style=' font-style: italic;'>et al</span><span>. A community-driven global reconstruction of human metabolism.</span><span> </span><span style=' font-style: italic;'>Nature biotechnology</span><span>,</span><span> </span><span style=' font-style: italic;'>31</span><span>(5), 419-425 (2013). </span></div><div  class = 'S2'></div>
<br>
<!-- 
##### SOURCE BEGIN #####
%% *genetic Minimal Cut Sets - gMCS*
%% Authors: Iñigo Apaolaza, University of Navarra, TECNUN School of Engineering, Spain
%% Luis V. Valcarcel, University of Navarra, TECNUN School of Engineering, Spain
%% Francisco J. Planes, University of Navarra, TECNUN School of Engineering, Spain
%% Reviewer(s): 
%% INTRODUCTION
% Minimal Cut Sets (MCSs) are minimal sets of reaction knockouts which deprive 
% a network from accomplishing a given metabolic task$$^1$. On the other hand, 
% genetic Minimal Cut Sets (gMCSs) consist of minimal sets of genes whose simultaneous 
% inhibition would render the functioning of a given metabolic task impossible$$ 
% ^2$. Therefore, the concepts of MCSs and gMCSs are equivalent but at different 
% levels: at the reaction level for the former and at the gene level for the latter.
% 
% MCSs are not directly converted into feasible knockout strategies at a gene 
% level due to the fact that the Gene-Protein-Reaction (GPR) rules, typically 
% provided in genome-scale metabolic reconstructions, are not one-to-one. Certainly, 
% we can find impractical reaction knockouts because they are catalyzed by enzymes 
% involving several genes, which increase the cost of the intervention. On the 
% other hand, the resulting gene knockout interventions from MCSs may provoke 
% undesired metabolic effects, as we may have reactions (included in a particular 
% MCS) catalyzed by an enzyme that additionally participate in other relevant 
% reactions (not included in the MCS under consideration). This fact is further 
% discussed in Apaolaza et al., 2017 (a)$$ ^2$, (b)$$^3$.
% 
% Moreover, state-of-the-art methods which calculate combined gene intervention 
% strategies are based on combinatorial approaches and, as a consequence, are 
% not viable for seeking for high order therapeutic strategies in large metabolic 
% networks. This tutorial aims also to demonstrate that the calculation gMCSs 
% involving a large number of genes is viable with the function provided.
%% EQUIPMENT SETUP
%% Initialize The Cobra Toolbox and select the solver (~25 sec)
% If necessary, initialise the Cobra Toolbox:

initCobraToolbox(false) % false, as we don't want to update
%% 
% Note that the approaches to search for MCS and gMCS problems are based on 
% Mixed Integer Linear Programming (MILP). The solver selected will be Cplex.

changeCobraSolver('ibm_cplex', 'all');
%% PROCEDURE
% This tutorial will be divided in two different parts. First, a toy example 
% will be used to illustrate the difference between MCSs and gMCSs and, second, 
% gMCSs will be calculated for Recon2.v04 metabolic model$$^4$.
%% 1. Toy example (~5 sec)
% The toy example under study is presented below:
% 
% 
% 
% First, we are going to load the MAT-file which contains the metabolic network 
% in the toy example.

load('gMCStoyExample.mat');
%% 
% As different metabolic models in COBRA format, it contains the following fields: 
% _S_, _ub_, _lb_, _rxns_, _mets_, _genes_, _rules_, _grRules_, _rxnGeneMat_ and 
% _c_.

rxns = model.rxns
grRules = model.grRules
%% 
% We can observe that all reactions and genes have a one-to-one relationship 
% except for _r3_ and _r5_, which have rules containing 2 different genes and 
% an "or" and an "and" relationship, respectively. On the other hand, _g2_ and 
% _g5_ take part in two different reactions each. The existence of non-trivial 
% relationships between genes and reactions are the cause of not obtaining the 
% same solutions with MCSs and gMCSs.
% 
% We aim to calculate MCSs which will render the biomass production impossible 
% via the function named _calculateMCS()_. Therefore, the desired target metabolic 
% task (represented in the field _c_ of the structure) will be the biomass reaction.

model.rxns(logical(model.c))
%% 
% We will calculate 10 MCSs and we will set the length of the largest MCS to 
% be calculated to 7 (the number of reactions), in order to calculate all the 
% existing MCSs.

n_MCS = 10;
max_len_MCS = 7;
%% 
% Now, the different optional arguments of the function must be set, if needed. 
% In this case, we will calculate MCSs involving reactions 1 to 6. The biomass 
% reaction (_rBio_) is omitted since it is the target metabolic task. 

optional_inputs.rxn_set = {'r1'; 'r2'; 'r3'; 'r4'; 'r5'; 'r6'};
%% 
% The time limit for the calculation of each MCS will be set to 30 seconds.

optional_inputs.timelimit = 30;
%% 
% Although not shown here, other optional arguments may be set, as detailed 
% in the documentation of the function. 
% 
% We will now proceed with the calculation of the MCSs.

[MCSs, MCS_time] = calculateMCS(model, n_MCS, max_len_MCS, optional_inputs);
%% 
% Despite having tried to calculate 10 MCSs, only 6 exist for this Toy Example. 
% The results are shown in the following piece of code:

MCSs{1}
MCSs{2}
MCSs{3}
MCSs{4}
MCSs{5}
MCSs{6}
%% 
% We now translate these minimal reaction knockout strategies to the gene level 
% following the _grRules_. The following table shows the genetic interventions 
% which must be fulfiilled to accomplish the respective reaction knockouts:
% 
% 
% 
% In order to check if the gene knockouts that have to be carried out to perform 
% the inhibition of the found MCSs are minimal, we will calculate gMCSs for the 
% same toy example using the function _calculateGeneMCS()_.
% 
% First, we need to define the name of the model to create the gene knockout 
% constraints matrix, _G_. The binary _G_ matrix defines for each row the set 
% of blocked reactions arising from the knockout of an irreducible subset of genes. 
% The subset of genes associated with each row in G is interrelated and their 
% simultaneous knockout is required to delete at least one of the reactions in 
% the metabolic network. This matrix may be needed for other calculations. We 
% will name here 'toy_example_gMCS' and again will calculate 10 gMCSs. The function 
% will look for the G matrix in ['G_' model_name '.mat'] (here “G_toy_example_gMCS.mat). 
% If this structure is not available, the function buildGmatrix() is called and 
% the G matrix for the model under consideration generated and saved. In this 
% case, the length of the largest gMCS calculated will be set to 6 (the number 
% of genes).

model_name = 'toy_example_gMCS';
n_gMCS = 10;
max_len_gMCS = 6;
%% 
% Next, we set the optional inputs. The maximum time for the calculation of 
% each gMCS will be 30 seconds.

optional_inputs.timelimit = 30;
%% 
% Note that, again, some more optional inputs may be set, as detailed in the 
% documentation of the function. However, they are not needed for the calculation 
% of the problem presented in this tutorial.
% 
% We will now proceed with the calculation of the gMCSs.

[gMCSs, gMCS_time] = calculateGeneMCS(model_name, model, n_gMCS, max_len_gMCS, optional_inputs);
%% 
% In the same way as with MCSs, 3 gMCSs have been calculated in total.

gMCSs{1}
gMCSs{2}
gMCSs{3}
%% 
% As shown in the previous table, calculating MCSs would result in 8 different 
% genetic intervention strategies even when, as we have just demonstrated, only 
% 3 minimal genetic interventions exist. Moving on to gMCSs seems, therefore, 
% a more efficient strategy to calculate minimal gene knockout strategies.
%% 2. gMCSs in large metabolic networks (20 min ~ 1 hour)
% The algorithm presented in this tutorial is able to calculate intervention 
% strategies in large metabolic networks. In addition, it is sufficiently flexible 
% to calculate gMCSs involving a particular gene knockout. Interesting results 
% regarding this issue can be found in Apaolaza et al., 2017(a)$$ ^2$.
% 
% We are now going to calculate 6 gMCSs for the human metabolic model Recon2.v04$$^4$ 
% involving gene RRM1 (Entrez ID: 6240). To do so, the folllowing piece of code 
% has to be executed.
% 
% First, we are going to load the metabolic model.

global CBTDIR
load([CBTDIR filesep 'test' filesep 'models' filesep 'mat' filesep 'Recon2.v04.mat']);
%% 
% Next, in the same way as in the toy example, we will proceed to set the name 
% of the model ('Recon2'), the number of gMCSs to be calculated (6), the length 
% of the largest gMCS we want to calculate (10) and the optional input variables. 
% Regarding the latter, the maximum time for the calculation of gMCSs will be 
% set to 2 minutes (120 seconds), the KO will be '6240', namely the Entrez ID 
% of RRM1. In this case, we will also have to set the  "separate_transcript" field 
% to '.', because, if we do not, the calculation of gMCSs will be done at the 
% transcript level as a consequence of the usage of the aforementioned character 
% in Recon2.v04 to differentiate the transcripts of the same gene.

model_name = 'Recon2';
n_gMCS = 6;
max_len_gMCS = 10;
optional_inputs.KO = '6240';
optional_inputs.separate_transcript = '.';
optional_inputs.timelimit = 2*60;
%% 
% Finally, we will calculate the gMCSs. Turning the parallel pool on is recommended 
% if the G matrix has not been calculated yet.

% parpool;
[gMCSs, gMCS_time] = calculateGeneMCS(model_name, modelR204, n_gMCS, max_len_gMCS, optional_inputs);
%% 
% The results obtained are the following:

gMCSs{1}
gMCSs{2}
gMCSs{3}
gMCSs{4}
gMCSs{5}
gMCSs{6}
%% 
% 6 gMCSs have been calculated involving 2, 3, 3, 4, 4 and 5 genes, respectively. 
% It is important to note that no more gMCSs have been found as a consequence 
% of setting the number of gMCSs to be calculated to 6. If we increase the aforementiones 
% input, more gMCSs involving RRM1 will be calculated. It is important to note 
% that the calculation of a minimal intervention strategy involving 5 genes with 
% an exhaustive combinatorial strategy is actually inviable.
%% TIMING
%% 
% # Equipment Setup: ~25 sec.
% # Toy Example: ~5 sec.
% # gMCSs in large metabolic networks: ~5 min.
%% 
% Note that both _calculateMCS()_ and _calculateGeneMCS()_ functions return 
% MCS_time and gMCS_time, respectively, which contain the timing for all the solving 
% steps.
%% REFERENCES
% _1._ von Kamp, A. & Klamt, S. Enumeration of smallest intervention strategies 
% in genome-scale metabolic networks. _PLoS computational biology_, _10_(1), e1003378 
% (2014).
% 
% _2._ Apaolaza, I., _et al_. An in-silico approach to predict and exploit synthetic 
% lethality in cancer metabolism. _Nature Communications_, _8_(1), 459 (2017 (a)). 
% 
% _3._ Apaolaza, I., José-Eneriz, E. S., Agirre, X., Prósper, F. & Planes, F. 
% J. COBRA methods and metabolic drug targets in cancer. _Molecular & Cellular 
% Oncology_, (just-accepted), 00-00 (2017 (b)).
% 
% _4._ Thiele, I., _et al_. A community-driven global reconstruction of human 
% metabolism. _Nature biotechnology_, _31_(5), 419-425 (2013). 
% 
%
##### SOURCE END #####
-->
</div></body></html>